package com.ruoyi.circle.domain;

import java.time.LocalDateTime;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 圈子成员关系对象 circle_member_relation
 *
 * @author 区嘉盛
 * @date 2025-06-11
 */
@Schema(description = "圈子成员关系对象")
public class CircleMemberRelation extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 自增ID */
    @Schema(title = "自增ID")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /** 圈子ID */
    @Schema(title = "圈子ID")
    @Excel(name = "圈子ID")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long circleId;

    /** 用户ID */
    @Schema(title = "用户ID")
    @Excel(name = "用户ID")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long userId;

    /** 成员角色 */
    @Schema(title = "成员角色", description = "1-会员 2-管理员 3-圈主")
    @Excel(name = "成员角色", readConverterExp = "1=会员,2=管理员,3=圈主")
    private Integer memberRole;

    /** 加入时间 */
    @Schema(title = "加入时间")
    @Excel(name = "加入时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime joinedTime;

    /** 成员状态 */
    @Schema(title = "成员状态", description = "1-正常 2-已退出")
    @Excel(name = "成员状态", readConverterExp = "1=正常,2=已退出")
    private Integer memberStatus;
    
    /** 黑名单状态 */
    @Schema(title = "黑名单状态", description = "0-正常 1-黑名单")
    @Excel(name = "黑名单状态", readConverterExp = "0=正常,1=黑名单")
    private Integer blacklistStatus;

    /** 用户昵称 */
    @Schema(title = "用户昵称")
    @Excel(name = "用户昵称")
    private String nickName;

    /** 用户头像 */
    @Schema(title = "用户头像")
    private String avatar;

    /** 用户等级 */
    @Schema(title = "用户等级")
    @Excel(name = "用户等级")
    private String userLevel;

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }

    public void setCircleId(Long circleId)
    {
        this.circleId = circleId;
    }

    public Long getCircleId()
    {
        return circleId;
    }

    public void setUserId(Long userId)
    {
        this.userId = userId;
    }

    public Long getUserId()
    {
        return userId;
    }

    public void setMemberRole(Integer memberRole)
    {
        this.memberRole = memberRole;
    }

    public Integer getMemberRole()
    {
        return memberRole;
    }

    public void setJoinedTime(LocalDateTime joinedTime)
    {
        this.joinedTime = joinedTime;
    }

    public LocalDateTime getJoinedTime()
    {
        return joinedTime;
    }

    public void setMemberStatus(Integer memberStatus)
    {
        this.memberStatus = memberStatus;
    }

    public Integer getMemberStatus()
    {
        return memberStatus;
    }

    public void setBlacklistStatus(Integer blacklistStatus)
    {
        this.blacklistStatus = blacklistStatus;
    }

    public Integer getBlacklistStatus()
    {
        return blacklistStatus;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    public String getAvatar() {
        return avatar;
    }

    public void setAvatar(String avatar) {
        this.avatar = avatar;
    }

    public String getUserLevel() {
        return userLevel;
    }

    public void setUserLevel(String userLevel) {
        this.userLevel = userLevel;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("circleId", getCircleId())
                .append("userId", getUserId())
                .append("memberRole", getMemberRole())
                .append("joinedTime", getJoinedTime())
                .append("memberStatus", getMemberStatus())
                .append("blacklistStatus", getBlacklistStatus())
                .append("nickName", getNickName())
                .append("avatar", getAvatar())
                .append("userLevel", getUserLevel())
                .toString();
    }
}